<?php
/**
 * Created by PhpStorm.
 * User: zhanghua
 * Date: 18-7-27
 * Time: 下午7:18
 */

namespace App\Providers;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;

class Md5SaltHasher implements HasherContract
{
	public function info($hashedValue)
	{
		return password_get_info($hashedValue);
	}

	/**
	 * 用户md5(md5($password).$salt)加密
	 * @param string $value 明文密码
	 * @param array $options ['salt'=> 'abcdef'] 盐值传参
	 * @return string
	 */
	public function make($value, array $options = [])
	{
		if(!isset($options['salt'])){
			return $value;
		}

		$hash = md5(md5($value) . ( (string) $options['salt']));

		return $hash;
	}

	/**
	 * 加密验证
	 * @param string $value 明文密码
	 * @param string $hashedValue 加密过后的密码
	 * @param array $options  ['salt'=>'abcdef'], 盐值传参
	 * @return bool
	 */
	public function check($value, $hashedValue, array $options = [])
	{
		if (strlen($hashedValue) === 0) {
			return false;
		}

		if(!isset($options['salt'])) return false;


		return $hashedValue === md5(md5($value) . $options['salt']);
	}

	/**
	 * @param string $hashedValue
	 * @param array $options
	 * @return bool
	 */
	public function needsRehash($hashedValue, array $options = [])
	{
		return false;
	}
}